For testing a device under test (DUT), ideally the DUT has to be exposed to all possible permutations of parameter values that may influence (the testing of) the DUT. In an example for a mechanical device, such parameters could be for example temperature, humidity, or altitude. In case of an electronic device, such as a data processing unit, possible parameters may be the size of a data block transfer in bytes, an alignment of start addresses relative to a cache line size, the number of initial wait cycles, the data direction (read-write), or the occurrence of a data parity error (yes-no).
A known possibility for testing all permutations of parameters is to simply count through all possible permutations. FIG. 1 shows an example with three different parameters A, B and C. Parameter A comprises parameter values 1 and 2, parameter B comprises parameter values 3, 4, and 5, and parameter C comprises the parameter values 6, 7, 8, 9, and A. For applying all possible (2.times.3.times.5=30) permutations to the DUT, normally all parameters are varied successively as depicted in FIG. 1. That means that e.g. parameter A is first varied through all possible parameter values of the parameter A, whereas the other parameters B and C remain unchanged at one parameter value, respectively. After all parameter values of the first parameter A have been varied, the next parameter B is varied and the remaining parameter C remains unchanged. Eventually, after all possible permutations of the parameters A and B have been varied, the next, and in this case the last, parameter C will be changed to another parameter value. This will be repeated until all permutations are given.
When a testing cycle comprising a sequence of parameter permutations as shown in FIG. 1 is applied to the DUT, it will take seven successively applied parameter permutations until the parameter C eventually will change its value for the first time. It is easy to see that in case that a large number of parameters is to be varied and/or that each parameter comprises a large number of parameter values, it might take a long time until some of those parameters will be first changed. Furthermore, each test with a specific permutation of parameters takes a certain testing time not including the time to move from one permutation to the next. In case that e.g. 10 parameters (A, B, . . . , J) with each 10 parameter values (1, 2, . . . , 10) have to be tested, and each test will require 1 s, the total testing time will be 10.sup.10 s, which is about 300 years (one year has 3.15.times.10.sup.7 s). The last parameter J, however, would first be changed after 10.sup.9 s, which is after about 30 years. In case a fault happens when the last parameter J has e.g. the parameter value 3, it will almost be impossible to find this fault, since the required testing time is too long.
In case the required testing time for testing all possible permutations is simply too long, a compromise has to be found between a good coverage of possible permutations and the time required therefore. One possibility is to randomly select permutations. Disadvantageous in this solution, however, is that a statement about the actual coverage of the random test cannot be given.